
//=======================================================================
//@e̒xŎ̃GtFNg\ׂ̊֐WłB
//@̃t@Cinclude_functionŎ荞ނA
//@KvȕRsyĎgpĂB
//-----------------------------------------------------------------------
//@Obj_ShotALL.txt荞ޏꍇ
//@̃tH_荞ޕKv͂܂B
//=======================================================================

//=======================================================================
//  摜ւ̃pX \Ⴄꍇ͗vύX
//-----------------------------------------------------------------------
let shoteff = GetCurrentScriptDirectory()~ ".\img\ShotEffect.png";
//=======================================================================

//=======================================================================
//  GtFNgw萔̎荞
//-----------------------------------------------------------------------
#include_function".\effectdata\lib_EffectId.txt"
//=======================================================================

//-----------------------------------------------------------------------
//  xGtFNg [th06`th14]
//-----------------------------------------------------------------------
task ObjShot_ShotDelay(id,X,Y,Alpha,Angle,Time) {

    let a      = Obj_Create(OBJ_EFFECT);
    let scale  = 1.00+(0.10*Time);
    let scale1 = 1.00+(0.10*Time);
    let scale2 = 1.00;
    let alpha  = Alpha;
    let alpha2 = alpha;
    let addUV  = 31;
    let py     = 0;

    let rectU  = [  0, 32, 64, 96,128,160,192,224,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0,256,320,384,448,256,320,384,448,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0];
    let rectV  = [  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 64, 64, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 64, 64, 64, 64, 64, 64, 64,  0,  0];

    if(id>=70) { ObjEffect_SetRenderState(a,ADD); id -= 70; py = 33; alpha = 0; alpha2 = alpha; }

    alternative(int(id/10))
    case(0) { scale = scale * 0.60; scale1 = scale1 * 0.60; scale2 = scale2 * 0.60; }
    case(2) { alpha = 0; alpha2 = 0; py = 0; addUV = 63; ObjEffect_SetRenderState(a,ADD); }
    case(3) { scale = scale * 0.36; scale1 = scale1 * 0.36; scale2 = scale2 * 0.36; }

    LoadGraphic(shoteff);

    Obj_SetPosition(a,X,Y);
    ObjEffect_SetTexture(a,shoteff);
    ObjEffect_SetPrimitiveType(a,PRIMITIVE_TRIANGLESTRIP);
    ObjEffect_SetScale(a,scale,scale);
    ObjEffect_SetAngle(a,0,0,Angle+90);
    ObjEffect_SetLayer(a,5);
    ObjEffect_CreateVertex(a,4);
    ObjEffect_SetVertexXY(a,0,-addUV/2.00,-addUV/2.00);
    ObjEffect_SetVertexXY(a,1,-addUV/2.00, addUV/2.00);
    ObjEffect_SetVertexXY(a,2, addUV/2.00,-addUV/2.00);
    ObjEffect_SetVertexXY(a,3, addUV/2.00, addUV/2.00);
    ObjEffect_SetVertexUV(a,0,rectU[id],rectV[id]+py);
    ObjEffect_SetVertexUV(a,1,rectU[id],rectV[id]+addUV+py);
    ObjEffect_SetVertexUV(a,2,rectU[id]+addUV,rectV[id]+py);
    ObjEffect_SetVertexUV(a,3,rectU[id]+addUV,rectV[id]+addUV+py);

    loop(Time) {
	alpha += (255-alpha2)/Time;
	scale -= (scale1-scale2)/Time;

	ObjEffect_SetScale(a,scale,scale);
	ObjEffect_SetVertexColor(a,0,alpha,255,255,255);
	ObjEffect_SetVertexColor(a,1,alpha,255,255,255);
	ObjEffect_SetVertexColor(a,2,alpha,255,255,255);
	ObjEffect_SetVertexColor(a,3,alpha,255,255,255);
	yield;
    }
    Obj_Delete(a);
}

//-----------------------------------------------------------------------
//  ŃGtFNg [th06`th09.5]
//-----------------------------------------------------------------------
task ObjShot_ShotBreak01(id,X,Y,Angle,Time) {

    let a      = Obj_Create(OBJ_EFFECT);
    let scale  = 1.00;
    let scale1 = 1.00;
    let scale2 = 1.50;
    let alpha  = 255;
    let addUV  = 31;

    let rectU  = [257,288,320,352,384,416,448,480,  0,  0,257,288,320,352,384,416,448,480,  0,  0,256,320,384,448,256,320,384,448,  0,  0,257,288,320,352,384,416,448,480,  0,  0,257,288,320,352,384,416,448,480,  0,  0,257,288,320,352,384,416,448,480,  0,  0,257,288,320,352,384,416,448,480,  0,  0];
    let rectV  = [128,128,128,128,128,128,128,128,  0,  0,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0, 64, 64, 64, 64,  0,  0,128,128,128,128,128,128,128,128,  0,  0,128,128,128,128,128,128,128,128,  0,  0,128,128,128,128,128,128,128,128,  0,  0,128,128,128,128,128,128,128,128,  0,  0];

    if(id>=70) { id -= 70; }

    alternative(int(id/10))
    case(1) { scale = scale * 1.60; scale1 = scale1 * 1.60; scale2 = scale2 * 1.60; }
    case(2) { ObjEffect_SetRenderState(a,ADD); addUV = 63; }
    case(3) { scale = scale * 0.60; scale1 = scale1 * 0.60; scale2 = scale2 * 0.60; }
    case(4) { scale = scale * 1.60; scale1 = scale1 * 1.60; scale2 = scale2 * 1.60; }
    case(5) { scale = scale * 1.60; scale1 = scale1 * 1.60; scale2 = scale2 * 1.60; }
    case(6) { scale = scale * 1.30; scale1 = scale1 * 1.30; scale2 = scale2 * 1.30; }

    LoadGraphic(shoteff);

    Obj_SetPosition(a,X,Y);
    ObjEffect_SetTexture(a,shoteff);
    ObjEffect_SetPrimitiveType(a,PRIMITIVE_TRIANGLESTRIP);
    ObjEffect_SetScale(a,scale,scale);
    ObjEffect_SetAngle(a,0,0,Angle+90);
    ObjEffect_SetLayer(a,4);
    ObjEffect_CreateVertex(a,4);
    ObjEffect_SetVertexXY(a,0,-addUV/2.00,-addUV/2.00);
    ObjEffect_SetVertexXY(a,1,-addUV/2.00, addUV/2.00);
    ObjEffect_SetVertexXY(a,2, addUV/2.00,-addUV/2.00);
    ObjEffect_SetVertexXY(a,3, addUV/2.00, addUV/2.00);
    ObjEffect_SetVertexUV(a,0,rectU[id],rectV[id]);
    ObjEffect_SetVertexUV(a,1,rectU[id],rectV[id]+addUV);
    ObjEffect_SetVertexUV(a,2,rectU[id]+addUV,rectV[id]);
    ObjEffect_SetVertexUV(a,3,rectU[id]+addUV,rectV[id]+addUV);

    loop(Time) {
	alpha -= 255/Time;
	alternative(int(id/10))
	case(2) { scale -= 1.00/Time; }
	others  { scale += (scale2-scale1)/Time; }

	ObjEffect_SetScale(a,scale,scale);
	ObjEffect_SetVertexColor(a,0,alpha,255,255,255);
	ObjEffect_SetVertexColor(a,1,alpha,255,255,255);
	ObjEffect_SetVertexColor(a,2,alpha,255,255,255);
	ObjEffect_SetVertexColor(a,3,alpha,255,255,255);
	yield;
    }
    Obj_Delete(a);
}

//-----------------------------------------------------------------------
//  ŃGtFNg [th10`th12]
//-----------------------------------------------------------------------
task ObjShot_ShotBreak02(id,X,Y,Angle,Time) {

    let a       = Obj_Create(OBJ_EFFECT);
    let b       = Obj_Create(OBJ_EFFECT);
    let scale   = 1.00;
    let scale1  = 1.00;
    let scale2  = 1.20;
    let scale3  = 0.00;
    let e_angle = rand_int(0,360);
    let alpha   = 255;
    let alpha2  = 240;
    let addUV   = 31;

    let rectU   = [  0, 32, 64, 96,128,160,192,224,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0,256,320,384,448,256,320,384,448,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0,  0, 32, 64, 96,128,160,192,224,  0,  0];
    let rectV   = [192,192,192,192,192,192,192,192,  0,  0,224,224,224,224,224,224,224,224,  0,  0,  0,  0,  0,  0, 64, 64, 64, 64,  0,  0,192,192,192,192,192,192,192,192,  0,  0,161,161,161,161,161,161,161,161,  0,  0,128,128,128,128,128,128,128,128,  0,  0, 96, 96, 96, 96, 96, 96, 96, 96,  0,  0];

    if(id>=70) { id -= 70; }

    alternative(int(id/10))
    case(0) { scale3  = 1.00; }
    case(2) { e_angle = Angle+90; addUV = 63; }
    case(3) { scale   = 0.60; scale1 = 0.60; scale2 = 0.60; scale3 = 0.80; }
    case(4) { e_angle = Angle+90; }
    case(5) { e_angle = Angle+90; }
    case(6) { scale3  = 1.00; }

    LoadGraphic(shoteff);

    Obj_SetPosition(a,X,Y);
    ObjEffect_SetTexture(a,shoteff);
    ObjEffect_SetRenderState(a,ADD);
    ObjEffect_SetPrimitiveType(a,PRIMITIVE_TRIANGLESTRIP);
    ObjEffect_SetAngle(a,0,0,e_angle);
    ObjEffect_SetLayer(a,4);
    ObjEffect_CreateVertex(a,4);
    ObjEffect_SetVertexXY(a,0,-addUV/2.00,-addUV/2.00);
    ObjEffect_SetVertexXY(a,1,-addUV/2.00, addUV/2.00);
    ObjEffect_SetVertexXY(a,2, addUV/2.00,-addUV/2.00);
    ObjEffect_SetVertexXY(a,3, addUV/2.00, addUV/2.00);
    ObjEffect_SetVertexUV(a,0,rectU[id],rectV[id]);
    ObjEffect_SetVertexUV(a,1,rectU[id],rectV[id]+addUV);
    ObjEffect_SetVertexUV(a,2,rectU[id]+addUV,rectV[id]);
    ObjEffect_SetVertexUV(a,3,rectU[id]+addUV,rectV[id]+addUV);

    Obj_SetPosition(b,X,Y);
    ObjEffect_SetTexture(b,shoteff);
    ObjEffect_SetRenderState(b,ADD);
    ObjEffect_SetPrimitiveType(b,PRIMITIVE_TRIANGLESTRIP);
    ObjEffect_SetAngle(b,0,0,rand_int(0,360));
    ObjEffect_SetLayer(b,4);
    ObjEffect_CreateVertex(b,4);
    ObjEffect_SetVertexXY(b,0,-16,-16);
    ObjEffect_SetVertexXY(b,1,-16, 16);
    ObjEffect_SetVertexXY(b,2, 16,-16);
    ObjEffect_SetVertexXY(b,3, 16, 16);
    ObjEffect_SetVertexUV(b,0,rectU[id],rectV[id]);
    ObjEffect_SetVertexUV(b,1,rectU[id],rectV[id]+addUV);
    ObjEffect_SetVertexUV(b,2,rectU[id]+addUV,rectV[id]);
    ObjEffect_SetVertexUV(b,3,rectU[id]+addUV,rectV[id]+addUV);

    loop(Time) {
	alpha  -= 255/Time;
	alpha2 -= 240/(Time/2);
	alternative(int(id/10))
	case(1) { scale += (scale2-scale1)/Time; }
	case(2) { scale -= 1.00/Time; }
	case(4) { scale += (scale2-scale1)/Time; }
	case(5) { scale += (scale2-scale1)/Time; }
	others  { scale -= (scale2-0.60)/Time; scale3 += 0.50/(Time/2); }

	ObjEffect_SetScale(a,scale,scale);
	ObjEffect_SetScale(b,scale3,scale3);
	ObjEffect_SetVertexColor(a,0,alpha ,255,255,255);
	ObjEffect_SetVertexColor(a,1,alpha ,255,255,255);
	ObjEffect_SetVertexColor(a,2,alpha ,255,255,255);
	ObjEffect_SetVertexColor(a,3,alpha ,255,255,255);
	ObjEffect_SetVertexColor(b,0,alpha2,255,255,255);
	ObjEffect_SetVertexColor(b,1,alpha2,255,255,255);
	ObjEffect_SetVertexColor(b,2,alpha2,255,255,255);
	ObjEffect_SetVertexColor(b,3,alpha2,255,255,255);
	yield;
    }
    Obj_Delete(a);
    Obj_Delete(b);
}

//-----------------------------------------------------------------------
//  ŃGtFNg [th12.5`th13]
//-----------------------------------------------------------------------
task ObjShot_ShotBreak03(id,X,Y,Angle,Time) {

    let a      = Obj_Create(OBJ_EFFECT);
    let scale  = 0.80;
    let rect   = 0;
    let i      = 0;
    let r      = rand_int(1,2);

    let rectU  = [256,288,320,352,384,416,448,480];
    let rectV  = [161,161,161,161,161,161,161,161];

    let R      = [255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0];
    let G      = [ 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0];
    let B      = [ 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0];

    if(id>=70) { id -= 70; }

    alternative(int(id/10))
    case(1) { scale = 1.00; }
    case(2) { scale = 1.20; }
    case(3) { scale = 0.60; }
    case(4) { scale = 1.00; }
    case(5) { scale = 1.00; }
    case(6) { scale = 1.05; }

    LoadGraphic(shoteff);

    Obj_SetPosition(a,X,Y);
    ObjEffect_SetTexture(a,shoteff);
    ObjEffect_SetRenderState(a,ADD);
    ObjEffect_SetPrimitiveType(a,PRIMITIVE_TRIANGLESTRIP);
    ObjEffect_SetScale(a,scale,scale);
    ObjEffect_SetAngle(a,180*r,0,rand_int(0,360));
    ObjEffect_SetLayer(a,4);
    ObjEffect_CreateVertex(a,4);
    ObjEffect_SetVertexXY(a,0,-16,-16);
    ObjEffect_SetVertexXY(a,1,-16, 16);
    ObjEffect_SetVertexXY(a,2, 16,-16);
    ObjEffect_SetVertexXY(a,3, 16, 16);
    ObjEffect_SetVertexUV(a,0,rectU[0],rectV[0]);
    ObjEffect_SetVertexUV(a,1,rectU[0],rectV[0]+31);
    ObjEffect_SetVertexUV(a,2,rectU[0]+31,rectV[0]);
    ObjEffect_SetVertexUV(a,3,rectU[0]+31,rectV[0]+31);
    ObjEffect_SetVertexColor(a,0,255,R[id],G[id],B[id]);
    ObjEffect_SetVertexColor(a,1,255,R[id],G[id],B[id]);
    ObjEffect_SetVertexColor(a,2,255,R[id],G[id],B[id]);
    ObjEffect_SetVertexColor(a,3,255,R[id],G[id],B[id]);

    loop(8) {
	loop(Time/8) {
	    ObjEffect_SetVertexUV(a,0,rectU[i],rectV[i]);
	    ObjEffect_SetVertexUV(a,1,rectU[i],rectV[i]+31);
	    ObjEffect_SetVertexUV(a,2,rectU[i]+31,rectV[i]);
	    ObjEffect_SetVertexUV(a,3,rectU[i]+31,rectV[i]+31);
	    yield;
	}
	i++
    }
    Obj_Delete(a);
}

//-----------------------------------------------------------------------
//  ŃGtFNg [th14]
//-----------------------------------------------------------------------
task ObjShot_ShotBreak04(id,X,Y,Angle,Time) {

    let a      = Obj_Create(OBJ_EFFECT);
    let scale  = 1.00;
    let rect   = 0;
    let i      = 0;
    let r      = rand_int(1,2);

    let rectU  = [256,288,320,352,384,416,448,480];
    let rectV  = [193,193,193,193,193,193,193,193];

    let R      = [255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0,255,255,255, 64, 64, 64,255,255,  0,  0];
    let G      = [ 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0, 64,128,255,255,255, 64, 64,255,  0,  0];
    let B      = [ 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0, 64, 64, 64, 64,255,255,255,255,  0,  0];

    if(id>=70) { id -= 70; }

    alternative(int(id/10))
    case(1) { scale = 1.30; }
    case(2) { scale = 1.60; }
    case(3) { scale = 0.80; }
    case(4) { scale = 1.30; }
    case(5) { scale = 1.30; }
    case(6) { scale = 1.20; }

    LoadGraphic(shoteff);

    Obj_SetPosition(a,X,Y);
    ObjEffect_SetTexture(a,shoteff);
    ObjEffect_SetRenderState(a,ADD);
    ObjEffect_SetPrimitiveType(a,PRIMITIVE_TRIANGLESTRIP);
    ObjEffect_SetScale(a,scale,scale);
    ObjEffect_SetAngle(a,180*r,0,rand_int(0,360));
    ObjEffect_SetLayer(a,4);
    ObjEffect_CreateVertex(a,4);
    ObjEffect_SetVertexXY(a,0,-16,-16);
    ObjEffect_SetVertexXY(a,1,-16, 16);
    ObjEffect_SetVertexXY(a,2, 16,-16);
    ObjEffect_SetVertexXY(a,3, 16, 16);
    ObjEffect_SetVertexUV(a,0,rectU[0],rectV[0]);
    ObjEffect_SetVertexUV(a,1,rectU[0],rectV[0]+31);
    ObjEffect_SetVertexUV(a,2,rectU[0]+31,rectV[0]);
    ObjEffect_SetVertexUV(a,3,rectU[0]+31,rectV[0]+31);
    ObjEffect_SetVertexColor(a,0,255,R[id],G[id],B[id]);
    ObjEffect_SetVertexColor(a,1,255,R[id],G[id],B[id]);
    ObjEffect_SetVertexColor(a,2,255,R[id],G[id],B[id]);
    ObjEffect_SetVertexColor(a,3,255,R[id],G[id],B[id]);

    loop(8) {
	loop(Time/8) {
	    ObjEffect_SetVertexUV(a,0,rectU[i],rectV[i]);
	    ObjEffect_SetVertexUV(a,1,rectU[i],rectV[i]+31);
	    ObjEffect_SetVertexUV(a,2,rectU[i]+31,rectV[i]);
	    ObjEffect_SetVertexUV(a,3,rectU[i]+31,rectV[i]+31);
	    yield;
	}
	i++
    }
    Obj_Delete(a);
}